﻿using BUGCOME.Infrastructure.Attribute;
using BUGCOME.Model.Auth;
using BUGCOME.Service.Auth.IServices;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BUGCOME.Service.Auth
{
    /// <summary>
    /// 用户系统服务实现类，负责处理用户系统相关业务逻辑
    /// </summary>
    [AppService(ServiceType = typeof(IUserSystemService), ServiceLifetime = LifeTime.Transient)]
    public class UserSystemService : BaseService<UserSystem>, IUserSystemService
    {
        /// <summary>
        /// 异步添加用户系统信息
        /// </summary>
        /// <param name="userSystem">用户系统信息实体</param>
        /// <returns>添加成功后的用户系统信息实体</returns>
        /// <exception cref="Exception">当用户个人信息已存在时抛出</exception>
        public async Task<UserSystem> AddUserSystemAsync(UserSystem userSystem)
        {
            // 检查该用户个人信息是否已存在（通过UserId唯一标识）
            bool isExist = await Queryable().AnyAsync(u => u.UserId == userSystem.UserId);

            // 若已存在则抛出异常，避免重复注册
            if (isExist)
            {
                throw new Exception("该用户个人信息已存在，请重新注册！");
            }

            // 插入用户个人信息到数据库，并返回插入后的完整实体
            return await Insertable(userSystem).ExecuteReturnEntityAsync();
        }
    }
}